package com.atguigu.bigdata.spark.zzgcore.rdd.builder

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Classname Spark01_RDD_Memory
 * @Description TODO
 * @Date 2023/9/19 16:28
 * @Author zhuzhenguo
 */
object Spark01_RDD_File_Par {
  def main(args: Array[String]): Unit = {

    // 准备环境,这个 *表示系统当前最大可用核数
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    val sc = new SparkContext(sparkConf)

    // textFile可以将文件作为数据处理的数据源，默认也可以设定分区
    // minPartitions：最小分区数量
    // math.min(defaultParallelism, 2)
//    val rdd: RDD[String] = sc.textFile("datas/1.txt")
    // 如果不想使用默认的分区数量，可以通过第二个参数指定分区数
    // spark读取文件底层就是用的Hadoop的读取方式
    // 最小分区数，真正的分区数会比这个数大
    // 分区数的计算方式
    // totalSize = 7
    // goalSize = 7 / 2 = 3(byte)，每个分区放三个字节
    // 7 / 3 = 2...1 (1.1)剩余的字节数需要判断 => 2 + 1 = 3
    val rdd: RDD[String] = sc.textFile("datas/1.txt", 3)

    rdd.saveAsTextFile("output")

    // 关闭环境
    sc.stop()
  }
}
